package com.hm.common.plugin.network.netty;

import com.hm.common.plugin.network.netty.vo.MessageResult;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;

/**
 * @author shishun.wang
 * @version 1.0
 * @date 2019/4/13 15:24
 * @describe
 */
public interface MessageSuport {
	
	default void sendTextMessage(ChannelHandlerContext channelHandlerContext,String message){
		channelHandlerContext.channel().writeAndFlush(new TextWebSocketFrame(message));
	}
	
	default void sendBinaryMessage(ChannelHandlerContext channelHandlerContext,BinaryWebSocketFrame binaryWebSocketFrame){
		channelHandlerContext.channel().writeAndFlush(binaryWebSocketFrame.retain());
	}
	
	default void sendMessage(ChannelHandlerContext channelHandlerContext,Object message){
		if (message instanceof String){
			this.sendTextMessage(channelHandlerContext,(String) message);
		}else{
			this.sendBinaryMessage(channelHandlerContext,(BinaryWebSocketFrame)message);
		}
	}

	public MessageResult messageExecute(Object message);
}
